function getRandomInt(min, max) {
    return Math.floor(Math.random() * (max - min + 1) + min)
}

export function shuffle(arr) {
    let _arr = arr.slice()
    for (let i = 0; i < _arr.length; i++) {
        let j = getRandomInt(0, i)
        let t = _arr[i]
        _arr[i] = _arr[j]
        _arr[j] = t
    }
    return _arr
}

export function handleBuyMode(buyMode) {
    let str = ''
    switch (+buyMode) {
        case 0:
            str = '普通模式'
            break;
        case 1:
            str = '秒杀模式'
            break;
        case 2:
            str = '拼团模式'
            break;
        case 5:
            str = '新拼团模式'
            break;
        case 7:
            str = '抽奖模式'
            break;
        case 9:
            str = '集call'
            break;
    }
    return str;
}


/* 
 * formatMoney(s,type) 
 * 功能：金额按千位逗号分隔
 * 参数：s，需要格式化的金额数值. 
 * 参数：type, 判断格式化后的金额是否需要小数位. 
 * 返回：返回格式化后的数值字符串. 
 */
export function formatMoney(s, type) {
    if (/[^0-9\.]/.test(s))
        return "0.00";
    if (s == null || s == "null" || s == "")
        return "0.00";
    s = s.toString().replace(/^(\d*)$/, "$1.");
    s = (s + "00").replace(/(\d*\.\d\d)\d*/, "$1");
    s = s.replace(".", ",");
    var re = /(\d)(\d{3},)/;
    while (re.test(s))
        s = s.replace(re, "$1,$2");
    s = s.replace(/,(\d\d)$/, ".$1");
    if (type == 0) {
        var a = s.split(".");
        if (a[1] == "00") {
            s = a[0];
        }
    }
    return s;
}

/*
 *  传入格式化金额字符串返回数字
 *  参数：s，需要格式化的金额数值
 * */
export function removeFormatMoney(s) {
    return parseFloat(s.replace(/[^\d\.-]/g, ""));
}


/* 
 * 时间戳转日期 
 * 参数：timestamp， 10位时间戳 
 * 参数：type， 格式类型 0-无时分秒 1-有时分秒
 * 返回：返回格式化后的日期 - 分隔. 
 */
export function timestampToDate(timestamp, type) {

    // 获取格式类型 默认 0
    var dateType = type || 0;

    // 时间戳转日期
    var date = new Date(timestamp * 1000);

    // 获取对应时间段 并格式化显示
    var year = date.getFullYear();
    var month = date.getMonth() + 1;
    month = month < 10 ? ("0" + month) : month;
    var day = date.getDate() < 10 ? ("0" + date.getDate()) : date.getDate();

    var timeString = "";
    if (dateType == 0) {
        // 无时分秒
        timeString = year + "-" + month + "-" + day;
    } else {
        // 有时分秒
        var hour = date.getHours();
        hour = hour < 10 ? ("0" + hour) : hour;
        var min = date.getMinutes();
        min = min < 10 ? ("0" + min) : min;
        var second = date.getSeconds();
        second = second < 10 ? ("0" + second) : second;
        timeString = year + "-" + month + "-" + day + " " + hour + ":" + min + ":" + second;
    }

    return timeString;
}

/* 
 * 日期转时间戳 
 * 参数：date，需要转换的日期字符串  
 * 返回：时间戳
 */
export function dateToTimestamp(date) {
    let tmpDate = new Date(date);
    return tmpDate.getTime();
}

// 计算浏览器剩下的高度
export function windowRemainH(arr) {
    let win_h = window.innerHeight
    let result = 0
    for (let i = 0; i < arr.length; i++) {
        win_h -= arr[i]
    }
    result = win_h
    return result
}
/**
 * 对象深拷贝
 * @param obj
 */
export function objectDeepCopy(obj) {
    var txt = JSON.stringify(obj);
    return JSON.parse(txt);
}
/* 
 * 保存缓存 
 * 参数：key，保存的key值  
 * 参数：value，保存的value值 
 * 返回：时间戳
 */
export function saveCache(key, value, expiredays = 1) {
    if (window.localStorage) {
        window.localStorage.setItem(key, value);
    } else {
        this.setCookie("key", value, expiredays);
    }
}

/* 
 * 保存缓存 
 * 参数：key，保存的key值  
 * 参数：value，保存的value值 
 * 返回：时间戳
 */
export function getCache(key) {
    if (window.localStorage) {
        return localStorage.getItem(key);
    } else {
        return this.getCookie(key);
    }
}

/* 
 * 设置cookie 
 * 参数：c_name，cookie名称 
 * 参数：value，保存的cookie值 
 * 参数：expiredays，保存的周期 天数
 * 返回：时间戳
 */
export function setCookie(c_name, value, expiredays) {
    var exdate = new Date()
    exdate.setDate(exdate.getDate() + expiredays)
    document.cookie = c_name + "=" + escape(value) +
        ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString())
}

/* 
 * 获取cookie 
 * 参数：c_name，cookie名称 
 * 返回：时间戳
 */
export function getCookie(c_name) {
    if (document.cookie.length > 0) {
        c_start = document.cookie.indexOf(c_name + "=")
        if (c_start != -1) {
            c_start = c_start + c_name.length + 1
            c_end = document.cookie.indexOf(";", c_start)
            if (c_end == -1) c_end = document.cookie.length
            return unescape(document.cookie.substring(c_start, c_end))
        }
    }
    return ""

}

/**
 * 初始化会员数据
 */
export function initMemberList() {
    return [{
            "id": 1,
            "name": "月度（1个月）",
            "price": '',
            "num": 1,
            "is_open": true,
            "is_effect": true
        },
        {
            "id": 2,
            "name": "季度（3个月）",
            "price": '',
            "num": 3,
            "is_open": true,
            "is_effect": true
        },
        {
            "id": 3,
            "name": "半年度（6个月）",
            "price": '',
            "num": 6,
            "is_open": true,
            "is_effect": true
        },
        {
            "id": 4,
            "name": "年度（12个月）",
            "price": '',
            "num": 12,
            "is_open": false,
            "is_effect": true
        },
        {
            "id": 5,
            "name": "2年度（24个月）",
            "price": '',
            "num": 24,
            "is_open": false,
            "is_effect": false
        }
    ];
}

/*
 * 下载图片
 */
export function downloadIamge(imgsrc, name) {
    //下载图片地址和图片名
    var image = new Image();
    // 解决跨域 Canvas 污染问题
    image.setAttribute('crossOrigin', 'anonymous');
    image.onload = function() {
        var canvas = document.createElement('canvas');
        canvas.width = image.width;
        canvas.height = image.height;
        var context = canvas.getContext('2d');
        context.drawImage(image, 0, 0, image.width, image.height);
        var _dataURL = canvas.toDataURL('image/png'); //得到图片的base64编码数据

        var blob_ = dataURLtoBlob(_dataURL); // 用到Blob是因为图片文件过大时，在一部风浏览器上会下载失败，而Blob就不会

        var url = {
            name: name || "图片.png", // 图片名称不需要加.png后缀名
            src: blob_
        };

        if (window.navigator.msSaveOrOpenBlob) { // if browser is IE
            navigator.msSaveBlob(url.src, url.name); //filename文件名包括扩展名，下载路径为浏览器默认路径
        } else {
            var link = document.createElement("a");
            link.setAttribute("href", window.URL.createObjectURL(url.src));
            link.setAttribute("download", url.name + '.png');
            document.body.appendChild(link);
            link.click();
        }
    };
    image.src = imgsrc;

    function dataURLtoBlob(dataurl) {
        var arr = dataurl.split(','),
            mime = arr[0].match(/:(.*?);/)[1],
            bstr = atob(arr[1]),
            n = bstr.length,
            u8arr = new Uint8Array(n);
        while (n--) {
            u8arr[n] = bstr.charCodeAt(n);
        }
        return new Blob([u8arr], { type: mime });
    }
}


/**
 * 数组元素交换位置
 * @param {array} arr 数组
 * @param {number} index1 添加项目的位置
 * @param {number} index2 删除项目的位置
 * index1和index2分别是两个数组的索引值，即是两个要交换元素位置的索引值，如1，5就是数组中下标为1和5的两个元素交换位置
 */
export function swapArray(arr, index1, index2) {
    arr[index1] = arr.splice(index2, 1, arr[index1])[0];
    return arr;
}